Network service aware routers, and applications thereof

ABSTRACT

In an embodiment, a computer-implemented method provides a service on a network. The method includes the following steps: (a) requesting, on a router, executable instructions from a remote server, the executable instructions specifying how the router is to operate to provide a service requested for a user of the network; (b) receiving the instructions; (c) initializing, on the router, a thread to execute the received instructions; (d) determining that a configuration of the router has changed; and (e) when the configuration of the router is determined to have changed, executing, on the initialized thread, the instructions to apply the service in accordance with the change in the router&#39;s configuration.

BACKGROUND

1. Field

This field is generally related to network configuration.

2. Related Art

A communication network may, for example, provide a network connection that allows data to be transferred between two geographically remote locations. A network connection may span multiple links connecting communication devices such as routers. Networks may have different topologies depending on how the links are interconnected through the communication devices. Given a particular network topology, multiple routes may be available between a source and destination.

A service provider may configure a communication network to provide network services, such as a connectivity service. A service provider may maintain a connectivity service at a particular service level, such as a specific level of bandwidth, latency, or jitter. For example, a user may request an Ethernet connection between two of its locations with a bandwidth of 400 Mbit/second.

To configure a communication network to provide a network service, a provisioning server may send configuration messages to routing devices along the route of the network connection. The configuration messages may, for example, instruct the routing devices on how to route the data or of a service level to provide in transmitting from a particular user or through a service.

To add or make changes to a network service, a service provider network typically uses an inventory database. The inventory database tracks different users, their associated network services, and the routing devices used to provide the network services. When a new service is added to the inventory database, a provisioning server may push configuration messages to associated routing devices in the inventory database. When an existing service is modified, for example, to change a service level, the provisioning server may look to the inventory database to determine which routing devices to send messages to. In this way, a central provisioning server and inventory database typically determine which routing devices need to be configured.

While having a central provisioning server determine which routing devices to configure may have advantages, it can also create bottlenecks. It may cause delay in provisioning the service. Also, the routing devices may be heterogeneous and having the provisioning server configure a variety of different types of devices may lead to additional complexities.

BRIEF SUMMARY

In an embodiment, a computer-implemented method provides a service on a network. The method includes the following steps: (a) requesting, on a router, executable instructions from a remote server, the executable instructions specifying how the router is to operate to provide a service requested for a user of the network; (b) receiving the instructions; (c) initializing, on the router, a thread to execute the received instructions; (d) determining that a configuration of the router has changed; and (e) when the configuration of the router is determined to have changed, executing, on the initialized thread, instructions to apply the service in accordance with the change in the router's configuration.

System and computer program product embodiments are also disclosed.

Further embodiments, features, and advantages of the invention, as well as the structure and operation of the various embodiments, are described in detail below with reference to accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated herein and form part of the specification, illustrate the present disclosure and, together with the description, further serve to explain the principles of the disclosure and to enable a person skilled in the relevant art to make and use the disclosure.

FIG. 1 is a diagram of a system for providing executable services to routing devices, according to an embodiment.

FIG. 2 is a diagram showing a routing device of the system in FIG. 1 in greater detail, according to an embodiment.

FIG. 3 is a flowchart of a method for provisioning a new service to a switch, according to an embodiment.

FIG. 4 is a flowchart of a method for changing a switch's configuration, according to an embodiment.

The drawing in which an element first appears is typically indicated by the leftmost digit or digits in the corresponding reference number. In the drawings, like reference numbers may indicate identical or functionally similar elements.

DETAILED DESCRIPTION

As described above, having a central provisioning server and inventory database orchestrate network services can cause delay and complexity. To deal with this, embodiments here allow routing devices to learn of service changes dynamically without an orchestration process.

FIG. 1 is a diagram of a system 100 for providing executable services to routing devices, according to an embodiment. System 100 includes a service provider network 106 that connects two user sites: user site 102 and 104.

In one example, each user site 102 and 104 may be a customer's location and the customer may request that service provider network 106 provide connectivity between the two locations. Service provider network 106 may be a local area network (LAN), metropolitan area network (MAN), or wide area network (WAN). It may utilize any point-to-point or multipoint-to-multipoint networking protocols. The network access protocols used may include, for example, Multi-Protocol Label Switching (MPLS), Ethernet, Asynchronous Transfer Mode (ATM), High-Level Data Link Control (HDLC), or Packet Relay.

Service provider network 106 includes a plurality of routing devices, such as routing devices 120, 122, and 124. Routing devices 120, 122, and 124 are sometimes for convenience referred to here as routers. The routing devices, or routers, are interconnected by links. For example, routing devices 120 and 122 are connected by a link 130. The routing devices are devices that forward packets, including devices at the data link layer (Open Systems Interconnection layer 2) and the network layer (Open Systems Interconnection layer 3).

On receipt of a packet, a routing device may determine which link to forward on based on the router's own configuration, for example the router's routing table, and characteristics the packet, such as the packet's destination address. As described above, in typical systems, changes to this configuration are done through a central orchestration system. For example, a user may schedule a bandwidth increase for a time in the future. When the orchestration server determines that scheduled time occurs, the orchestration server would send instructions to the routing devices changing their configuration to allow for the bandwidth increase. In this way, the orchestration server would execute the functionality describing how to provide the network service change.

In embodiments disclosed here, this functionality of determining how to provide the network service would occur not on the orchestration server, but on the routing devices themselves. In particular, routing devices 120, 122, and 124 each have a process running that specifies how to implement the service: processes 140, 142, and 144 respectively. The process, or daemon, may run its own thread of execution within its routing device. It may execute certain functionality when new traffic is received belonging to a particular user or being assigned to the service. Further, it may execute certain functionality when a configuration change is on the server. Still further, it may execute certain functionality periodically, regardless of the traffic received. In this way, embodiments enable the routers themselves to implement network services.

But, having the routing devices execute the functionality to implement the network services still may not obviate the need for some external, remote server. In particular, system 100 includes a network control server 110 that the routing devices 120, 122, and 124 communicate with to load their respective service processes 140, 142, and 144. To communicate with routing devices 120, 122, and 124, network control server 110 may be included in or coupled with service provider network 106.

Network control server 110 includes a provisioning module 114 and a service module 112. Provisioning module 114 maintains a list of service provider network 106's subscribed users and associated services. When a routing device detects traffic belonging to a new user, the routing device may send a message to network control server 110, which in turn forwards it to provisioning module 114. In response the message, provisioning module 114 may query a memory, such as a database (not shown), that maps data identifying a particular user (such as a source address or subnet) to associated services. Then, provisioning module 114 may send the results of the query back to the routing device that made the request. The response may identify each of the services that the user is subscribed to.

When the routing device receives the list of services, it may send another message to network control server 110, which this time forwards the request to service module 112. Service module 112 may include a repository listing all the services provided by service provider network 106. For each service, the repository may include an executable file including instructions on how the routing device is to operate to provide the service. The executable file may be, for example, a compiled, binary executable file or an un-compiled script. In response to the request, service module 112 may retrieve executable files for requested services and return them to the routing device. While service module 112 and provisioning module 114 are shown here on a single server for clarity, they may also be implemented on separate servers.

On receipt of the executable files, the routing device may initialize a thread for each service. The thread provides the functionality of the requested service.

FIG. 1 identifies the processes 140, 142, and 144 with different reference numbers because they are running on different routing devices. But, each of the processes 140, 142, and 144 may be an instantiation of the same executable file retrieved from service module 112. That executable file may specify functionality for the entire service and each of routing devices 120, 122, and 124 that participate in providing that service. But, even though processes 140, 142, and 144 may be executing the same service executable file, they may have different functionality. In particular, the service executable file may specify different functionality for different routing devices. On startup, a process may check the routing device's configuration to identify the device and execute functionality that the executable file specified for that particular device.

In one example, the user may subscribe to a service that collects metrics regarding the user's network traffic. Conventionally, to implement the service, an orchestration server would, using its knowledge of the routing devices involved in the user's traffic, periodically send requests to the routing devices querying them for metrics. However, in an embodiment disclosed here, processes 140, 142, and 144 may collect data and provide it as specified by the subscribed service.

In another example, the user may subscribe to a dynamic capacity service that changes a particular service level over time. The change may be at a scheduled time or the change may be in response to network conditions. For example, if a particular usage metric (such as bandwidth utilization) exceeds a threshold, the service may change a policer on the router to allow more bandwidth for the connection. Conventionally, orchestration server would monitor the time or network conditions and send instructions to the routing devices when the scheduled time or network connections are met. However, in an embodiment disclosed here, processes 140, 142, and 144 running on the routing devices themselves may determine when the appropriate time occurs or when the condition triggers using the router's configuration information (such as its configured time or utilization information). When the process determines that the appropriate time occurs or condition triggers, the process changes the routing device configuration to provide a new service level in accordance with the subscribed dynamic capacity service.

In some embodiments, multiple processes 140, 142, and 144 may communicate with each other to form their own service network 150, which is a group of routers that work in concert to provide the service. To establish service network 150, at least one of the processes 140, 142, and 144 may discover which other routers participate in providing the service. One of the processes may take a leading role and broadcast discovery messages to identify which others are participating in the service. Or, the processes may treat each other as peers and exchange packets identifying neighboring routing devices that are involved in providing the service.

For example, processes 140, 142, and 144 may communicate with each other to discover how to forward data through service network 150. Each process may learn the routing devices' neighbors and communicate that information to other routers in service network 150. For example, process 144 may learn router 124's neighbors by looking at its configuration information. From the configuration information, process 144 may learn that router 144 is connected to user site 104 through a port 162. Then, process 144 may communicate that information to router 122 and its service process 142. In turn, service process 142 may send a message to router 122 and service process 140 indicating that it can reach user site 104 through router 144. Using that reachability information, the routers can forward data through the service network. For example, when service process 140 receives traffic from user site 102 destined for user site 104, service process 140 can route the traffic to routing device 122, which in turn can route the traffic through routing device 124 to user site 104. By discovering a service network in this way, processes 140, 142, and 144 can cooperate to route traffic in accordance with a subscribed service without the need for an orchestration server to send routing instructions to each routing device.

In addition to using the service network to route traffic from a source to a destination, the service network can also load balance between different routes from the source to the destination. For example, suppose routing device 126 in FIG. 1 was part of the service network 150. For example, process 140 may discover the service network topology (e.g., by broadcasting discovery packets as above). From that topology, process 140 may determine that multiple paths connect user site 102 and user site 104. In particular, when router 120 receives data from user site 102 destined for user site 104, process 140 can determine whether to route data to router 122 or 126, both of which lead to user site 104 through router 124. To balance traffic across the network, process 140 can make that determination based on utilization information from routers on the respective paths, perhaps collected and transmitted to process 140 by the other service processes themselves. Alternatively, process 140 can balance traffic between the paths using round-robin or other ways as a skilled artisan would recognize.

In this way, embodiments move the functionality of providing a service from an orchestration server to a routing device. An example routing device is illustrated in FIG. 2 in greater detail.

FIG. 2 is a diagram 200 showing routing device 120 in greater detail. Routing device 120 includes a kernel 204.

Kernel 204, as known in the computing arts, is the routing device 120's operating system. It is a computer program that manages input and output requests from software, and translates them into data processing instructions for the central processing unit and other electronic components of the routing device. It also manages the various concurrent threads of execution on routing device 120.

Stored on routing device 120 is a configuration file 202. Configuration file 202 may have knowledge of all the different users that subscribe to service provider network 106, or at least all the different users that subscribe to services that utilize router 120. For example, configuration file 202 may indicate that a particular port of router 120 belongs to a particular user. In diagram 200, router 120 for example has ports 220, 222, and 224. Port 220 is connected to a network at user site 102. And configuration file 202 may associate port 220 with a user having the network at user site 102. In other examples, routing device 120 may recognize that data belongs to a particular user by examining its source address. In that example, configuration file 202 may have a source address or range of source addresses (such as an Internet Protocol subnet) that is associated with each user.

In one embodiment, an administrator may define aspects of configuration file 202. In other examples, configuration file 202, or portions thereof, may be loaded from network control server 110 by, for example, a service loader process 210 on router 120. Router 120 or kernel 204 may be configured to initiate service loader 210 on startup. Once initiated, service loader 210 queries network control server 110 for the list of current users. Service loader 210 may also query network control server 110 periodically to check for updates in the list of current users. As described above with respect FIG. 1, when service loader 210 detects a new user, it may first query network control server 110 for a list of services that the user subscribes to and then again query network control server 110 for executable files corresponding to the services.

Once the executable files are received at router 120, kernel 204 or service loader 210 may initiate them as service daemons 208. Each of service daemons 208 is a process as described with respect to FIG. 1 that implements functionality to execute a service. To execute the service, service daemons 208 may, for example, listen for changes to configuration file 202. In response to changes, service daemons 208 may write additional changes to configuration file 202, for example to update the router's routing table, or other configuration information, to implement the service. In some embodiments, service daemons 208 may also listen for incoming traffic and be notified when traffic meeting certain conditions, such as originating from a certain address, is received.

This architecture is flexible in that services may be updated automatically. Service daemons 208 may detect when changes are needed and report to network control server 110 to access updates. For example, service daemons 208 may detect if its router 120 is no longer connected to other routers in a service network and report to network control server 110 to update the installed services as needed.

In addition, because the service functionality is decentralized, it is more resilient. For example, in conventional systems, a single provisioning server may be responsible for the orchestrating services across the network. Should that provisioning server go down, much of the services on the service provider network may be inoperable until a backup is in place. Effectively, a single provisioning server creates a single point of failure. But, when the routers implement the services themselves and a router goes down, only the services provided by the failed router may be affected. In this way, the routers are made more autonomous, and the network is made more resilient.

FIG. 3 is a flowchart of a method 300 for provisioning a new service to a switch, an according to an embodiment.

Method 300 begins at step 302 when router 120 determines that the user is newly connected to the network. This step may occur, for example, when router 120's configuration file is updated to reflect that a new user has subscribed to the service provider network. The configuration file may be updated by an operator or by, for example, a provisioning system acting in response to an order from the user.

At step 304, router 120 sends a request querying a remote server, in particular network control server 110, for a list of services that the user subscribed to. In response to the query, network control server 110 looks up the services and sends information identifying the services that the user subscribed to back to router 120 at step 306.

On receipt of information identifying which services the user subscribed to, router 120 determines which service executable files it needs. For some of the services, router 120 may already have a copy of the executable file and may even already have the a service daemon running. For those that it does not, router 120 sends another request to network control server 110 at step 308. This request identifies the services. Network control server 110 may determine that to provide this service to this user, this router does not need to run any executable file. But if it does determine that the router needs to run an executable, network control server 110 returns an executable file for each of the requested services.

On receipt of the executable files, routing device 120 initializes a process for each of the received executable files. With the processes running, they can participate in providing network services. To provide the network service, the processes may listen for changes in the router's configuration, as illustrated in FIG. 4.

FIG. 4 is a flowchart of a method 400 for changing a switch's configuration, according to an embodiment.

Method 400 begins at step 402 when kernel 204 detects a change in the router configuration. When kernel 204 detects a change in the router configuration, it notifies any daemons listening for the change at step 404, in this case daemon 208. The notification may, for example, occur asynchronously through a callback function that kernel 204 calls when a particular change occurs. In another example, daemon 208 may periodically check the router configuration for changes.

On receiving the notification, daemon 208 executes the functionality specified in the executable file to provide the service. For example, in a dynamic capacity example, the router configuration would include data on the user's bandwidth utilization and daemon 208 would be notified of a change in that utilization level at step 404. At step 406, daemon 208 would check to see if the utilization level meets a condition, such as a threshold, and, if it does, it would alter the router configuration to change a bandwidth limit associated with the user.

As mentioned above, daemon 208 can provide in a wide variety of services. In examples above, daemon 208 could provide a network connection (such as an Ethernet e-line), collect network metrics, provide dynamic capacity, and provide route determination and load balancing. Other services could also be provided by daemon 208. For example, daemon 208 could provide an artificial neural network, compression, firewall, intrusion detection, or wide area network (WAN) acceleration.

As mentioned above, various service processes running on different processes may communicate with each other to form a group of routers that together participate in providing a service. In examples above, the group of routers can work together to provide route determination and load balancing. Other services that the group could provide may be traffic switching, re-routing (for example, in response to congestion or a failed component), and collection of aggregated metrics reflecting utilization of the entire router group.

Each of the devices and modules in FIGS. 1 and 2 may be implemented in hardware, software, firmware, or any combination thereof.

Each of the devices and modules in FIGS. 1 and 2 may be implemented on the same or different computing devices. Such computing devices can include, but are not limited to, a personal computer, a mobile device such as a mobile phone, workstation, embedded system, game console, television, set-top box, or any other computing device. Further, a computing device can include, but is not limited to, a device having a processor and memory, including a non-transitory memory, for executing and storing instructions. The memory may tangibly embody the data and program instructions. Software may include one or more applications and an operating system. Hardware can include, but is not limited to, a processor, a memory, and a graphical user interface display. The computing device may also have multiple processors and multiple shared or separate memory components. For example, the computing device may be a part of or the entirety of a clustered or distributed computing environment or server farm.

Identifiers, such as “(a),” “(b),” “(i),” “(ii),” etc., are sometimes used for different elements or steps. These identifiers are used for clarity and do not necessarily designate an order for the elements or steps.

The present invention has been described above with the aid of functional building blocks illustrating the implementation of specified functions and relationships thereof. The boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries can be defined so long as the specified functions and relationships thereof are appropriately performed.

The foregoing description of the specific embodiments will so fully reveal the general nature of the invention that others can, by applying knowledge within the skill of the art, readily modify and/or adapt for various applications such specific embodiments, without undue experimentation, without departing from the general concept of the present invention. Therefore, such adaptations and modifications are intended to be within the meaning and range of equivalents of the disclosed embodiments, based on the teaching and guidance presented herein. It is to be understood that the phraseology or terminology herein is for the purpose of description and not of limitation, such that the terminology or phraseology of the present specification is to be interpreted by the skilled artisan in light of the teachings and guidance.

The breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents. 

What is claimed is:
 1. A computer-implemented method for providing a service on a network, comprising: (a) requesting, on a first router, executable instructions from a remote server, the executable instructions specifying how the first router is to operate to provide the service requested for a user of the network; (b) receiving the instructions; (c) initializing, on the first router, a first thread to execute the received instructions; (d) determining that a configuration of the first router has changed; (e) when the configuration of the first router is determined to have changed, executing, on the initialized thread, the instructions to apply the service in accordance with the change in the first router's configuration; (f) receiving, at the first thread, a packet from a second thread running on a second router the second thread executing the instructions from the remote server; and (g) determining, at the first thread, that the second thread is also participating in providing the service.
 2. The method of claim 1, further comprising: (f) determining, on the first router, that the user is newly connected to the network; and (g) when the first router determines that the user is newly connected, querying the remote server for the service the user subscribed to.
 3. The method of claim 1, wherein the executable instructions specify how both the first and second routers operate to provide the specified service.
 4. The method of claim 1, further comprising: (f) evaluating network traffic at the first router to determine whether the traffic is associated with the user of the network; and (g) when the first router determines that the traffic is associated with the user of the network, notifying the first thread to apply the service on the traffic.
 5. The method of claim 1, further comprising: (f) periodically checking the remote server for a change in the service; and (g) when the service changes, receiving, at the first router, updated executable instructions specifying how the first router is to operate.
 6. The method of claim 1, further comprising: (h) receiving, at the first thread, a packet from a third thread running on a third router, the third thread executing the instructions from the remote server; (i) determining, at the first thread, that the third thread is participating in providing the service; (j) receiving, at the first router, a traffic destined for an address reachable through both the second and third routers; and (k) determining, in accordance with the instructions, whether to forward the traffic on the second or third routers.
 7. The method of claim 1, wherein determining (d) comprises receiving updated metrics related to network traffic that is associated with the user and forwarded by the first router, and wherein the executing (e) comprises transmitting the metrics to the remote server.
 8. A non-transitory program storage device tangibly embodying a program of instructions executable by at least one machine to perform a method for providing a service on a network, said method comprising: (a) requesting, on a first router, executable instructions from a remote server, the executable instructions specifying how the first router is to operate to provide the service requested for a user of the network; (b) receiving the instructions; (c) initializing, on the first router, a first thread to execute the received instructions; (d) determining that a configuration of the first router has changed; and (e) when the configuration of the first router is determined to have changed, executing, on the initialized thread, the instructions to apply the service in accordance with the change in the first router's configuration; (f) receiving, at the first thread, a packet from a second thread running on a second router, the second thread executing the instructions from the remote server; and (g) determining, at the first thread, that the second thread is also participating in providing the service.
 9. The program storage device of claim 8, the method further comprising: (f) determining, on the first router, that the user is newly connected to the network; and (g) when the first router determines that the user is newly connected, querying the remote server for the service the user subscribed to.
 10. The program storage device of claim 8, wherein the executable instructions specify how both the first and second routers operate to provide the specified service.
 11. The program storage device of claim 8, the method further comprising: (f) evaluating network traffic at the first router to determine whether the traffic is associated with the user of the network; and (g) when the first router determines that the traffic is associated with the user of the network, notifying the first thread to apply the service on the traffic.
 12. The program storage device of claim 8, the method further comprising: (f) periodically checking the remote server for a change in the service; and (g) when the service changes, receiving, at the first router, updated executable instructions specifying how the first router is to operate.
 13. The program storage device of claim 8, the method further comprising: (h) receiving, at the first thread, a packet from a third thread running on a third router, the third thread executing the instructions from the remote server; (i) determining, at the first thread, that the third thread is participating in providing the service; (j) receiving, at the first router, a traffic destined for an address reachable through both the second and third routers; and (k) determining, in accordance with the instructions, whether to forward the traffic on the second or third routers.
 14. The program storage device of claim 8, wherein determining (d) comprises receiving updated metrics related to network traffic that is associated with the user and forwarded by the first router, and wherein the executing (e) comprises transmitting the metrics to the remote server.
 15. The program storage device of claim 8, wherein determining (d) comprises receiving updated information describing an amount of bandwidth traffic associated with the user; and wherein the executing (e) comprises: (i) determining whether the updated information satisfies a condition; and (ii) updating the configuration of the first router to change an amount of bandwidth allocated to the user as the service provides.
 16. A computer-implemented method for providing a service on a network, comprising: (a) receiving, at a server, a request from a first router for executable instructions that specify how the first router is to operate to provide the service requested for a user of the network; (b) transmitting the instructions requested in (a) to the first router for initialization as a first thread to execute the instructions requested in (a); (c) receiving, at the server, a request from a second router for executable instructions that specify how the second router is to operate to provide the service; and (d) transmitting the instructions requested in (c) to the second router for initialization as a second thread to execute the instructions requested in (c), wherein the first router determines that a configuration of the first router has changed and, when the configuration of the first router is determined to have changed, executes, on the initialized thread, the instructions requested in (a) to apply the service in accordance with the change in the first router's configuration, and wherein the first thread receives a packet from the second thread to determine that the second thread is also participating in providing the service.
 17. A computer-implemented method for providing a service on a network, comprising: (a) requesting, on a router, executable instructions from a remote server, the executable instructions specifying how the router is to operate to provide the service requested for a user of the network; (b) receiving the instructions; (c) initializing, on the router, a thread to execute the received instructions; (d) receiving updated information describing an amount of bandwidth traffic associated with the user; (e) determining, at the thread, whether the updated information satisfies a condition; and (f) when the updated information is determined to satisfy the condition, executing, on the initialized thread, the instructions to update the configuration of the router to change an amount of bandwidth allocated to the user as the service provides. 